#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//在进行内存开辟的时候一定要检查malloc是否开辟成功
//错误示例如下：
void GetM(char** p, int num) {
	*p = (char*)malloc(num);
}
void test01() {
	char* str;
	GetM(&str, 100);
	strcpy(str, "hello");
	printf(str);
	free(str);
	str = NULL;
}
//GatM正确示例
void GetM1(char** p, int num) {
	*p = (char*)malloc(num);
	if (*p == NULL) {
		perror("malloc");
		return;//malloc返回空值的化提前结束程序，防止崩溃
	}
}


//其次在free内存后，地址要注意置为空，否则再次访问该地址时就会造成非法访问


int main() {
	test01();
	return 0;
}//虽然可以打印出"hello"字样，但是这样是有风险的，因为GetM函数并没有对*p开辟的空间进行检查，如果malloc开辟失败将返回NULL而strcpy不能操作NULL，一旦操作就会报错